package models

import (
	"goods_srv/basic/config"
	"time"
)

type Goods struct {
	Id          int32     `gorm:"column:id;type:int;primaryKey;not null;" json:"id"`
	GoodsName   string    `gorm:"column:goods_name;type:varchar(50);comment:商品名称;not null;" json:"goods_name"`                                // 商品名称
	GoodsPrice  float64   `gorm:"column:goods_price;type:decimal(10, 2);comment:商品价格;not null;default:0.00;" json:"goods_price"`              // 商品价格
	BrandName   string    `gorm:"column:brand_name;type:varchar(50);comment:品牌名称;not null;" json:"brand_name"`                                // 品牌名称
	GoodsUrl    string    `gorm:"column:goods_url;type:varchar(255);comment:商品图片;not null;" json:"goods_url"`                                 // 商品图片
	Sales       int32     `gorm:"column:sales;type:mediumint;comment:销量;not null;" json:"sales"`                                              // 销量
	GoodsDesc   string    `gorm:"column:goods_desc;type:varchar(255);comment:商品简介;not null;" json:"goods_desc"`                               // 商品简介
	GoodsStock  uint32    `gorm:"column:goods_stock;type:int UNSIGNED;comment:商品库存;not null;" json:"goods_stock"`                             // 商品库存
	GoodsStatus uint8     `gorm:"column:goods_status;type:tinyint UNSIGNED;comment:商品状态 1-已上架 2-未上架;not null;default:1;" json:"goods_status"` // 商品状态 1-已上架 2-未上架
	CreateAt    time.Time `gorm:"column:create_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"create_at"`
	UpdateAt    time.Time `gorm:"column:update_at;type:datetime;not null;default:CURRENT_TIMESTAMP;" json:"update_at"`
	DeleteAt    time.Time `gorm:"column:delete_at;type:datetime;default:NULL;" json:"delete_at"`
}

func (g *Goods) TableName() string {
	return "goods"
}

// 创建商品
func (g *Goods) CreateGoods() error {
	return config.DB.Create(&g).Error
}

// 根据id查询商品
func (g *Goods) GetGoodsById() error {
	return config.DB.Where("id = ?", g.Id).Limit(1).Find(&g).Error

}
